package com.py.credit.dao;

import com.py.credit.common.Page;
import com.py.credit.entity.*;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

public interface DeptDataDao {

    /**
     * 获取列表详情页面
     *
     * @param startTime
     * @param endTime
     * @return
     */
    List<DeptData> selectListForPage(@Param(value = "deptId") String deptId,
                                     @Param(value = "startTime") String startTime,
                                     @Param(value = "endTime") String endTime,
                                     @Param(value = "page") Page page);

    /**
     * 根据规则id查询联合奖惩的部门
     *
     * @param gzid
     * @return
     */
    List<Map<String, Object>> selectForLhbm(@Param(value = "gzid") int gzid);

    DeptData selectByAjbh(@Param(value = "ajbh") String ajbh);

    List<Measure> selectCsByAjbh(@Param(value = "gzId") int gzId);

    Companymess selectQYXXByTybm(@Param(value = "tybm") String tybm);

    Companymess selectGRXXByTybm(@Param(value = "tybm") String tybm);

    /**
     * 获取下载数据
     *
     * @param startTime
     * @param endTime
     * @param deptId
     * @return
     */
    List<DeptData> getReportList(@Param(value = "startTime") String startTime,
                                        @Param(value = "endTime") String endTime,
                                        @Param(value = "deptId") String deptId);

    /**
     * 查询改部门的所有反馈信息
     *
     * @param deptId
     * @return
     */
    List<Feedback> getFeedbackDetail(@Param(value = "ajbh") String ajbh,
                                     @Param(value = "deptId") String deptId);

    Person selectZrrInfo(@Param(value = "idcard") String idcard);

    /**
     * 部门发起的惩戒和奖惩的数量
     *
     * @param startTime
     * @param endTime
     * @return
     */
    List<NumObj> deptReportNum(@Param(value = "deptId") String deptId,
                               @Param(value = "startTime") String startTime,
                               @Param(value = "endTime") String endTime);

    /**
     * 部门发起的联合惩戒进行中的数量按月统计
     *
     * @param startTime
     * @param endTime
     * @return
     */
    List<DeptNum> selectCjInfo(@Param(value = "deptId") String deptId,
                               @Param(value = "startTime") String startTime,
                               @Param(value = "endTime") String endTime);

    /**
     * 部门发起的联合惩戒移出的的数量按月统计
     *
     * @param startTime
     * @param endTime
     * @return
     */
    List<DeptNum> selectCjOutInfo(@Param(value = "deptId") String deptId,
                                  @Param(value = "startTime") String startTime,
                                  @Param(value = "endTime") String endTime);

    /**
     * 部门发起的联合激励进行中的数量按月统计
     *
     * @param startTime
     * @param endTime
     * @return
     */
    List<DeptNum> selectJlInfo(@Param(value = "deptId") String deptId,
                               @Param(value = "startTime") String startTime,
                               @Param(value = "endTime") String endTime);

    /**
     * 部门发起的联合激励移出的数量按月统计
     *
     * @param startTime
     * @param endTime
     * @return
     */
    List<DeptNum> selectJlOutInfo(@Param(value = "deptId") String deptId,
                                  @Param(value = "startTime") String startTime,
                                  @Param(value = "endTime") String endTime);

    int selectDeptFq(@Param(value = "deptId") String deptId,
                     @Param(value = "startTime") String startTime,
                     @Param(value = "endTime") String endTime);

    int selectDeptXy(@Param(value = "deptId") String deptId,
                     @Param(value = "startTime") String startTime,
                     @Param(value = "endTime") String endTime);

    int selectDeptSj(@Param(value = "deptId") String deptId,
                     @Param(value = "startTime") String startTime,
                     @Param(value = "endTime") String endTime);

    int selectDeptLj(@Param(value = "deptId") String deptId,
                     @Param(value = "startTime") String startTime,
                     @Param(value = "endTime") String endTime);

    int selectSjGz(@Param(value = "deptId") String deptId,
                   @Param(value = "startTime") String startTime,
                   @Param(value = "endTime") String endTime);

    List<String> selectCfZrr(@Param(value = "deptId") String deptId,
                             @Param(value = "startTime") String startTime,
                             @Param(value = "endTime") String endTime);

    /**
     * 部门配合的惩戒和奖惩的数量
     *
     * @param startTime
     * @param endTime
     * @return
     */
    List<NumObj> deptPhReportNum(@Param(value = "deptId") String deptId,
                                 @Param(value = "startTime") String startTime,
                                 @Param(value = "endTime") String endTime);

    /**
     * 部门应该反馈的数量
     *
     * @param startTime
     * @param endTime
     * @return
     */
    List<DeptNum> selectJcRecieve(@Param(value = "deptId") String deptId,
                                  @Param(value = "startTime") String startTime,
                                  @Param(value = "endTime") String endTime);

    /**
     * 部门实际反馈的数量
     *
     * @param startTime
     * @param endTime
     * @return
     */
    List<DeptNum> selectJcFeedback(@Param(value = "deptId") String deptId,
                                   @Param(value = "startTime") String startTime,
                                   @Param(value = "endTime") String endTime);

    int selectJcRecieveTotal(@Param(value = "deptId") String deptId,
                             @Param(value = "startTime") String startTime,
                             @Param(value = "endTime") String endTime);

    int selectJcFeedbackTotal(@Param(value = "deptId") String deptId,
                              @Param(value = "startTime") String startTime,
                              @Param(value = "endTime") String endTime);

    int selectOthersFeedbackTotal(@Param(value = "deptId") String deptId,
                                  @Param(value = "startTime") String startTime,
                                  @Param(value = "endTime") String endTime);

    int selectOtherSjGz(@Param(value = "deptId") String deptId,
                        @Param(value = "startTime") String startTime,
                        @Param(value = "endTime") String endTime);

    /**
     * 获取列表详情页面
     *
     * @param startTime
     * @param endTime
     * @return
     */
    List<DeptData> getPhListForPage(@Param(value = "deptId") String deptId,
                                    @Param(value = "startTime") String startTime,
                                    @Param(value = "endTime") String endTime,
                                    @Param(value = "page") Page page);

    List<DeptData> getReportPhList(@Param(value = "startTime") String startTime,
                                          @Param(value = "endTime") String endTime,
                                          @Param(value = "deptId") String deptId);
}
